home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- #include "defs.h"
-
- har *progname;
- har *filename;
- ixrect *pr1, *pr2;
-
- #ifdef STANDALONE
- ain(argc, argv, envp)
- #else
- asscale_main(argc, argv, envp)
- #endif
- int argc;
- char **argv;
- char **envp;
- {
- register int i, j;
- float scale;
- int xsize, ysize;
- colormap_t colormap;
-
- xsize = ysize = 0;
- scale = 1.;
-
- if (strrchr(argv[0],'/') == NULL)
- progname = strsave(argv[0]);
- else progname = strsave(strrchr(argv[0],'/')+1);
-
- warning("progname = %s",progname);
- parse_profile(&argc, argv, envp);
-
- while ((gc = getopt(argc, argv, "s:")) != EOF)
- switch (gc) {
- case 's':
- scale = atof(optarg);
- break;
- case '?':
- errflag++;
- break;
- }
-
- if (errflag)
- error((char *) 0, "Usage: %s: [-s scale] [infile] [outfile]\n", progname);
-
- for (stream = 0; optind < argc; stream++, optind++)
- if (stream < 2 && strcmp(argv[optind], "-") != 0)
- if (freopen(argv[optind], mode[stream], f[stream]) == NULL)
- error("%s %s", PR_IO_ERR_INFILE, argv[optind]);
-
- if ((pr1 = pr_load(stdin, &colormap)) == NULL)
- error(PR_IO_ERR_RASREAD);
-
- if (strcmp(progname, "double") == 0)
- scale = 2.;
- else if (strcmp(progname, "triple") == 0)
- scale = 3.;
- else if (strcmp(progname, "quad") == 0)
- scale = 4.;
- else if (strcmp(progname, "half") == 0)
- scale = 0.5;
- else if (strcmp(progname, "third") == 0)
- scale = 1. / 3.;
- else if (strcmp(progname, "quarter") == 0)
- scale = 0.25;
-
- if (xsize == 0)
- xsize = (int) (pr1->pr_size.x * scale);
- if (ysize == 0)
- ysize = (int) (pr1->pr_size.y * scale);
-
- if ((pr2 = mem_create(xsize, ysize, pr1->pr_depth)) == NULL)
- error("%s : mem_create returned NULL\n", progname);
-
- for (j = 0; j < pr2->pr_size.y; j++)
- for (i = 0; i < pr2->pr_size.x; i++)
- pr_put(pr2, i, j, pr_get(pr1, (int) ((float) i / scale), (int) ((float) j / scale)));
-
- pr_dump(pr2, stdout, &colormap, RT_STANDARD, 0);
- }
-